/*******************************************************************************
* Copyright (c) 2006, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     IBM Corporation - initial API and implementation
*********************************************************************************/

// This file was generated by LPG

package org.eclipse.cdt.internal.core.dom.lrparser.c99;

public class C99Parserprs implements lpg.lpgjavaruntime.ParseTable, C99Parsersym {

    public interface IsKeyword {
        public final static byte isKeyword[] = {0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0
        };
    };
    public final static byte isKeyword[] = IsKeyword.isKeyword;
    public final boolean isKeyword(int index) { return isKeyword[index] != 0; }

    public interface BaseCheck {
        public final static short baseCheck[] = {0,
            0,0,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,3,1,
            1,4,4,3,3,2,2,4,1,0,
            1,1,2,2,2,2,2,2,2,2,
            2,4,1,4,1,3,3,3,1,3,
            3,1,3,3,1,3,3,3,3,1,
            3,3,1,3,1,3,1,3,1,3,
            1,3,1,5,1,3,3,3,3,3,
            3,3,3,3,3,3,1,1,2,1,
            0,1,3,1,1,1,1,1,1,1,
            1,3,4,3,2,4,1,2,1,1,
            1,2,5,7,5,1,0,7,2,5,
            9,8,3,2,2,2,3,2,4,2,
            2,2,2,2,1,1,1,1,2,1,
            2,2,2,1,2,2,1,2,2,1,
            2,2,1,2,2,1,3,1,3,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            6,8,0,0,1,1,3,3,3,0,
            1,0,1,2,4,2,1,1,1,3,
            1,1,2,3,7,8,0,1,0,1,
            3,1,3,1,1,1,1,1,1,3,
            1,1,1,1,1,3,1,2,2,1,
            5,3,1,3,5,1,3,1,3,2,
            4,3,5,4,6,6,3,5,1,3,
            4,5,6,0,1,2,1,3,1,1,
            3,2,1,1,1,1,2,1,2,3,
            1,1,1,3,1,2,2,2,3,4,
            5,1,1,7,3,0,0,1,1,3,
            3,4,1,1,2,3,2,3,2,1,
            0,1,2,1,1,1,1,1,2,1,
            3,6,4,2,4,-106,0,-161,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-37,0,0,0,-18,0,-61,-10,
            0,0,-159,0,-12,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-41,
            0,0,0,0,0,0,0,-9,0,0,
            0,0,0,-236,0,-4,0,0,0,0,
            0,-23,0,0,0,0,0,0,-2,0,
            0,-242,0,0,0,0,0,0,0,0,
            0,0,-32,0,-65,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-3,
            -139,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-13,0,
            0,0,-33,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -154,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-221,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-39,0,0,0,-120,0,-267,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -20,0,0,0,-21,0,-7,-27,0,0,
            -271,0,-156,0,-28,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -251,-31,0,0,0,-46,0,-22,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-24,0,0,-148,
            0,-30,0,0,0,0,0,0,0,0,
            0,0,0,0,-34,0,0,-137,0,-66,
            0,0,0,0,0,0,0,0,0,-25,
            0,-280,0,-279,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-44,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-58,0,-102,
            -50,0,0,0,0,-26,0,-38,0,0,
            0,-51,-146,0,0,0,0,0,0,0,
            0,0,0,0,0,-157,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-192,-53,0,0,0,0,0,0,-150,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-138,0,0,0,0,0,0,
            0,0,-35,0,-36,0,0,0,0,0,
            0,0,-60,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-113,0,-119,0,-132,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-188,0,0,0,0,0,-165,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-118,
            0,-104,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-121,0,-49,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-93,0,-151,0,-179,0,0,
            0,0,0,0,0,0,0,0,-67,0,
            0,0,0,0,0,0,0,-122,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-133,0,0,0,-160,0,
            -123,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-124,0,-189,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -200,0,0,0,0,0,-125,0,-63,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-201,0,-126,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-202,0,0,0,
            0,0,-127,0,-224,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-226,0,-128,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-227,0,0,0,0,0,-129,0,
            -240,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-265,
            0,-130,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-274,0,
            0,0,0,0,-131,0,-278,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,-284,0,-193,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,-290,0,0,0,0,0,
            -194,0,-74,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-75,0,-230,0,-76,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -77,0,0,0,-78,0,-235,0,-54,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,-79,0,0,0,-249,0,-80,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-81,0,
            -147,0,-82,0,0,0,0,0,0,0,
            -260,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-83,0,0,
            0,-270,0,-84,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-87,0,
            0,0,-152,0,-89,0,0,0,0,0,
            0,0,0,0,-277,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-111,0,0,0,-283,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-90,0,0,0,-72,0,-96,0,
            0,0,0,0,-48,0,0,0,-149,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-95,0,-42,0,0,-238,0,-62,
            -97,0,0,0,0,0,0,0,0,0,
            -92,-45,0,0,-99,-91,0,0,0,-100,
            -183,0,0,0,0,0,-114,0,0,-269,
            0,0,0,-103,0,-29,0,0,-52,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-70,0,-105,0,0,0,0,0,0,
            0,-40,0,0,0,0,0,0,0,0,
            0,0,0,-94,0,-172,0,0,0,-86,
            -107,0,-47,0,-101,0,0,0,0,0,
            0,0,0,-190,-115,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-59,-180,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-163,0,0,
            0,0,0,-164,0,0,0,0,-15,0,
            -8,0,-109,0,0,0,-166,-228,0,0,
            0,-169,0,0,0,0,-223,-191,-6,-112,
            0,0,-234,0,0,0,0,0,0,0,
            -162,0,0,0,-174,0,0,0,0,0,
            0,0,0,-17,0,-116,-252,0,0,0,
            0,0,0,0,0,0,0,0,-176,0,
            0,0,0,0,0,0,-195,0,0,0,
            0,0,-247,-197,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -248,0,0,0,0,-73,0,0,0,0,
            0,0,0,0,0,-177,0,0,0,-184,
            0,0,0,0,0,0,-263,0,0,-98,
            0,0,-85,-185,0,0,0,0,0,-204,
            0,0,0,-282,0,-276,0,0,0,-205,
            0,0,0,0,-206,0,0,0,0,0,
            0,0,0,0,0,-155,0,-207,0,0,
            0,0,0,0,0,0,0,0,0,-173,
            0,0,0,0,0,-208,0,0,0,0,
            0,-108,-57,0,0,-209,0,0,0,0,
            0,-175,0,0,-239,-258,0,0,0,0,
            0,0,0,0,0,0,0,-178,0,0,
            0,-187,0,-229,0,0,-232,0,0,0,
            0,0,0,0,0,0,0,-110,0,0,
            0,0,0,-210,0,0,0,0,0,-211,
            0,0,0,0,0,0,0,0,0,-254,
            0,0,-212,0,0,0,-233,0,0,0,
            0,-186,-213,0,-214,-250,0,-215,0,0,
            0,-256,0,0,-216,0,0,0,0,0,
            0,0,0,0,0,-217,0,-262,0,-218,
            -68,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,-257,0,0,
            -266,-198,0,0,-196,0,0,0,0,0,
            0,0,0,-219,0,0,0,0,0,-287,
            0,0,0,-220,0,0,0,0,0,0,
            0,0,0,0,-225,-261,0,0,-203,-243,
            0,-289,0,0,0,0,-268,0,0,0,
            0,0,0,0,0,0,-275,-181,0,0,
            -244,-281,0,-291,0,0,-43,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,-69,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-288,0,0,0,
            0,-1,0,0,0,-259,-153,0,0,0,
            0,0,0,0,0,0,0,0,0,-19,
            -273,0,0,-144,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,-140,0,
            0,0,0,0,-55,0,-71,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,-199,-286,0,-145,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -5,0,0,-88,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,-134,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            -141,0,0,0,0,0,0,0,0,0,
            -241,0,0,-142,0,0,0,0,0,0,
            0,0,0,-231,-246,0,0,-245,0,0,
            0,0,-143,0,0,0,0,0,0,0,
            0,0,0,0,-11,0,0,0,0,-14,
            -182,0,0,0,0,0,0,0,-16,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-64,-135,0,0,0,0,0,0,0,
            -136,0,0,0,-167,0,0,0,0,-117,
            0,0,0,0,0,0,0,0,0,0,
            -56,0,0,0,0,0,0,0,0,0,
            -264,0,0,0,0,0,-237,0,0,0,
            0,0,0,-222,0,0,0,0,0,0,
            0,0,0,-253,0,0,0,0,-272,0,
            0,0,0,0,0,0,0,0,0,0,
            0,-285,0,0,0,0,0,0,0,0,
            0,-158,0,0,0,0,0,0,0,0,
            0,-168,0,0,0,0,0,0,0,-170,
            0,0,0,-171,0,0,0,0,0,0,
            0,0,0,0,0,-255,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0
        };
    };
    public final static short baseCheck[] = BaseCheck.baseCheck;
    @Override
    public final int baseCheck(int index) { return baseCheck[index]; }
    public final static short rhs[] = baseCheck;
    @Override
    public final int rhs(int index) { return rhs[index]; };

    public interface BaseAction {
        public final static char baseAction[] = {
            107,2,125,40,40,23,23,45,45,17,
            17,1,1,3,3,3,3,4,4,4,
            5,6,6,6,6,6,6,6,6,78,
            78,90,7,7,7,7,7,7,7,7,
            7,7,7,8,8,9,9,9,9,10,
            10,10,11,11,11,12,12,12,12,12,
            13,13,13,14,14,15,15,16,16,18,
            18,19,19,20,20,22,22,22,22,22,
            22,22,22,22,22,22,22,29,27,21,
            108,108,91,91,56,30,30,30,30,30,
            30,30,31,31,31,28,28,92,92,68,
            68,32,32,33,33,33,63,63,34,34,
            34,34,34,35,35,35,35,35,47,47,
            24,24,24,24,24,48,48,48,84,84,
            79,79,79,79,80,80,80,81,81,81,
            82,82,82,83,83,83,93,93,85,85,
            86,49,51,51,51,51,51,64,65,65,
            65,65,65,65,65,65,65,65,65,65,
            72,69,69,109,110,74,74,70,70,70,
            87,94,94,95,95,88,88,88,57,111,
            111,96,97,97,97,71,71,112,98,98,
            99,99,89,89,25,26,26,26,50,52,
            52,41,41,41,41,37,37,38,42,42,
            43,39,39,100,100,44,114,114,113,113,
            46,46,46,46,46,46,46,46,46,101,
            54,54,54,54,36,75,75,66,66,66,
            67,67,58,58,115,115,77,77,76,76,
            76,59,59,59,60,61,61,61,62,62,
            62,62,73,73,53,53,55,117,116,116,
            116,116,102,118,119,119,120,120,121,121,
            107,107,122,122,103,103,103,103,123,123,
            104,104,104,105,106,106,292,1606,998,17,
            21,18,1133,949,45,1152,1171,1156,1194,1175,
            1219,1200,1248,622,1223,1254,75,331,92,359,
            176,136,214,1426,20,505,17,21,18,1133,
            43,45,1152,1171,1156,1194,1175,1219,1200,1248,
            908,1824,2191,285,138,135,137,161,944,703,
            525,225,234,668,587,1610,1051,180,337,242,
            140,167,358,232,1355,144,147,150,153,754,
            340,333,1115,136,214,1501,368,2105,2110,2119,
            1544,136,214,322,835,1407,20,1559,17,21,
            18,1133,41,525,225,233,146,135,137,161,
            419,1313,1519,789,138,135,137,161,703,666,
            225,230,443,220,610,222,224,128,275,541,
            140,167,90,587,188,144,147,150,153,403,
            340,270,783,926,273,1501,368,2105,2110,2119,
            1544,1426,20,211,17,21,18,1133,43,45,
            1152,1171,1156,1194,1175,1765,527,1350,20,551,
            17,21,18,1133,949,45,1152,1171,1156,1194,
            1175,1219,1200,1248,440,1223,1254,75,1124,282,
            1265,20,551,17,21,18,1133,949,45,1152,
            1171,1156,1194,1175,1219,1200,1248,226,1223,1254,
            75,296,282,256,214,314,595,324,402,987,
            283,1451,1269,1426,20,442,17,21,18,1133,
            43,45,1152,1171,1156,1194,1175,1219,1200,1775,
            288,412,833,283,1335,1269,1242,20,324,17,
            21,18,1133,949,45,1152,1171,1156,1194,1175,
            1219,1200,1248,290,1223,1254,75,892,282,289,
            1426,20,501,17,21,18,1133,43,45,1152,
            1171,1156,1676,1766,129,587,187,314,587,31,
            1426,20,291,17,21,18,1133,43,40,283,
            913,1269,1369,20,421,17,21,18,1133,949,
            45,1152,1171,1156,1194,1175,1219,1200,1248,159,
            1223,1254,75,311,282,1199,20,1360,17,21,
            18,1133,949,45,1152,1171,1156,1194,1175,1219,
            1200,1248,295,1223,1254,75,229,339,1108,180,
            833,358,1436,1682,313,283,1004,1269,829,1857,
            531,294,749,1426,20,240,17,21,18,1133,
            43,45,1645,136,214,292,1426,20,25,17,
            21,18,1133,43,45,1152,1171,1156,1194,1175,
            1219,1786,1466,831,658,105,138,135,137,161,
            1426,20,228,17,21,18,1133,43,45,1152,
            1171,1734,140,167,587,31,1387,144,147,150,
            153,284,340,326,672,587,189,1501,368,2105,
            2110,2119,1544,1388,20,2180,17,21,18,1133,
            949,45,1152,1171,1156,1194,1175,1219,1200,1248,
            261,1223,1254,75,440,810,1223,20,440,17,
            21,18,1133,949,45,1152,1171,1156,1194,1175,
            1219,1200,1248,1285,1223,1254,75,231,1567,1426,
            20,1574,17,21,18,1133,949,45,1152,1171,
            1156,1194,1175,1219,1200,1248,241,1223,1254,75,
            359,92,1426,20,24,17,21,18,1133,43,
            45,1152,1171,1156,1194,1175,1219,1200,1248,277,
            1223,1254,94,1426,20,418,17,21,18,1133,
            949,45,1152,1171,1156,1194,1175,1219,1200,1248,
            244,1223,1254,75,986,86,1426,20,998,17,
            21,18,1133,43,45,1152,1171,1740,1535,1426,
            20,125,17,21,18,1133,43,39,1426,20,
            1559,17,21,18,1133,949,45,1152,1171,1156,
            1194,1175,1219,1200,1248,440,1223,1254,75,1126,
            85,1426,20,181,17,21,18,1133,949,45,
            1152,1171,1156,1194,1175,1219,1200,1248,19,1223,
            1254,75,235,84,1426,20,1132,17,21,18,
            1133,949,45,1152,1171,1156,1194,1175,1219,1200,
            1248,440,1223,1254,75,1441,83,1426,20,384,
            17,21,18,1133,949,45,1152,1171,1156,1194,
            1175,1219,1200,1248,1573,1223,1254,75,440,82,
            1426,20,276,17,21,18,1133,949,45,1152,
            1171,1156,1194,1175,1219,1200,1248,440,1223,1254,
            75,1591,81,1426,20,440,17,21,18,1133,
            949,45,1152,1171,1156,1194,1175,1219,1200,1248,
            23,1223,1254,75,440,80,1426,20,1750,17,
            21,18,1133,949,45,1152,1171,1156,1194,1175,
            1219,1200,1248,440,1223,1254,75,1772,79,1426,
            20,440,17,21,18,1133,949,45,1152,1171,
            1156,1194,1175,1219,1200,1248,1808,1223,1254,75,
            440,78,1426,20,274,17,21,18,1133,949,
            45,1152,1171,1156,1194,1175,1219,1200,1248,440,
            1223,1254,75,280,77,1426,20,440,17,21,
            18,1133,949,45,1152,1171,1156,1194,1175,1219,
            1200,1248,1988,1223,1254,75,440,76,1426,20,
            281,17,21,18,1133,949,45,1152,1171,1156,
            1194,1175,1219,1200,1248,440,1223,1254,75,1852,
            1850,1426,20,1471,17,21,18,1133,949,45,
            1152,1171,1156,1194,1175,1219,1200,1248,1874,1223,
            1254,75,1055,1871,1426,20,876,17,21,18,
            1133,949,45,1152,1171,1156,1194,1175,1219,1200,
            1248,663,1223,1254,75,630,93,1426,20,331,
            17,21,18,1133,43,45,1152,1171,1156,1194,
            1175,1219,1200,1248,345,1223,1254,94,1426,20,
            796,17,21,18,1133,949,45,1152,1171,1156,
            1194,1175,1219,1200,1248,1520,1223,1254,75,931,
            74,1426,20,288,17,21,18,1133,43,45,
            1658,1426,20,213,17,21,18,1133,43,45,
            1152,1171,1156,1194,1175,1219,1200,1248,751,1223,
            1254,94,1426,20,550,17,21,18,1133,43,
            45,1152,1171,1156,1194,1175,1219,1200,1248,1067,
            1223,1254,94,1426,20,1064,17,21,18,1133,
            43,45,1152,1171,1753,1426,20,203,17,21,
            18,1133,43,45,1152,1171,1156,1194,1175,1219,
            1200,1248,331,1223,1254,94,1426,20,1872,17,
            21,18,1133,43,45,1152,1171,1156,1194,1175,
            1219,1200,1248,1069,1223,1254,94,1445,20,589,
            17,21,18,1133,34,178,1414,316,1762,1426,
            20,204,17,21,18,1133,43,45,1152,1171,
            1156,1686,111,587,1507,358,87,658,1295,1472,
            890,626,1917,96,1445,109,95,97,98,99,
            100,419,908,789,1623,708,1,1414,316,1472,
            793,1464,110,256,214,255,214,946,126,1518,
            587,297,88,111,54,232,331,87,1494,358,
            1472,1728,308,107,96,1445,109,95,97,98,
            99,100,1289,20,58,17,21,18,1133,43,
            36,315,331,110,666,225,230,1376,219,610,
            222,224,668,275,986,498,235,1414,316,264,
            358,1104,318,622,108,986,268,783,926,273,
            1443,124,247,111,941,1205,2071,87,668,1523,
            1472,766,112,265,96,1445,109,95,97,98,
            99,100,419,419,1546,1717,1965,278,1683,703,
            666,225,1323,110,220,610,222,1275,60,128,
            196,666,225,230,986,219,610,222,224,582,
            275,1146,262,358,107,2111,494,986,119,1414,
            316,127,905,268,783,926,273,986,331,355,
            1119,1396,1712,998,123,111,136,214,1508,87,
            1041,358,1472,477,2224,172,96,1445,109,95,
            97,98,99,100,1108,180,355,986,1422,143,
            135,137,161,106,668,110,666,225,582,1261,
            219,610,222,535,2229,142,167,359,205,136,
            214,160,392,1178,1319,20,108,17,21,18,
            1133,43,44,666,225,230,735,219,610,222,
            224,1490,139,135,137,161,1445,20,160,17,
            21,18,1133,33,156,528,360,243,141,167,
            1118,733,577,145,148,151,154,1489,340,558,
            480,1414,789,1112,1465,658,28,28,1269,1269,
            706,156,528,382,587,299,868,111,1422,577,
            745,87,256,214,28,1480,1269,1387,96,1445,
            1512,95,97,98,99,100,1426,20,1486,17,
            21,18,1133,43,45,1152,1171,1156,1194,1768,
            521,1414,789,666,225,230,367,219,610,222,
            224,260,874,786,658,658,477,111,1846,764,
            1455,87,562,1414,789,908,998,2201,96,1445,
            104,95,97,98,99,100,198,1472,358,111,
            2084,312,890,87,603,1414,789,868,279,1422,
            96,1445,102,95,97,98,99,100,664,1610,
            309,111,200,201,1284,87,899,255,214,1473,
            1286,182,96,1445,103,95,97,98,99,100,
            644,1414,789,1430,666,225,230,1464,219,610,
            222,224,1161,1432,2207,1220,1500,111,672,1846,
            193,87,685,1414,789,1141,858,1868,96,1445,
            120,95,97,98,99,100,1411,1358,998,111,
            1000,1426,20,87,17,21,18,1133,43,38,
            96,1445,115,95,97,98,99,100,726,1414,
            789,998,331,199,201,1289,20,210,17,21,
            18,1133,43,36,1467,111,1381,1624,1926,87,
            767,1414,789,206,711,1788,96,1445,1867,95,
            97,98,99,100,1811,904,1499,111,668,359,
            359,87,808,1414,789,248,614,1503,96,1445,
            114,95,97,98,99,100,2088,1142,933,111,
            658,359,359,87,849,1414,789,355,2340,1422,
            96,1445,122,95,97,98,99,100,2340,22,
            245,111,198,1426,20,87,17,21,18,1133,
            43,37,96,1445,121,95,97,98,99,100,
            2340,246,296,2340,666,225,230,359,219,610,
            222,224,349,2340,376,1473,1484,1426,20,160,
            17,21,18,1133,43,45,1152,1171,1763,306,
            355,986,1422,195,1426,20,420,17,21,18,
            1133,43,45,1152,1630,2340,194,298,2242,358,
            2340,789,157,528,2340,622,2340,1426,20,305,
            17,21,18,1133,43,35,2340,666,225,230,
            88,219,610,222,224,2340,1849,1005,986,2085,
            1426,20,494,17,21,18,1133,43,45,1152,
            1640,703,666,225,230,118,220,610,222,224,
            278,406,2340,376,1426,20,2340,17,21,18,
            1133,43,36,2340,2340,302,304,310,306,389,
            1061,2340,1812,275,2340,420,2340,2340,2340,2340,
            2340,2340,2340,2340,2011,2340,268,783,926,273,
            2340,2340,2340,2340,2340,2340,2340,2340,305,2340,
            2340,1426,20,1041,17,21,18,1133,43,48,
            2340,950,2340,658,1426,20,275,17,21,18,
            1133,43,47,2340,992,950,658,658,1339,268,
            783,926,273,1426,20,1387,17,21,18,1133,
            43,46,2340,2340,2340,1003,267,668,198,1387,
            1062,664,1610,2340,303,304,310,2340,2340,1449,
            2340,668,2340,2340,703,392,2340,2340,2340,260,
            136,214,2340,2340,275,136,214,1060,1455,2088,
            2340,1473,2340,260,136,214,2340,270,783,926,
            273,1060,1455,149,135,137,161,2340,152,135,
            137,161,358,358,316,316,2340,155,135,137,
            161,358,193,316,2340,1479,2340,316,1696,1868,
            890,2340,2340,88,88,2340,198,198,2340,895,
            895,1084,88,658,2340,198,88,2340,895,1472,
            210,1084,116,658,2340,255,214,890,2340,1757,
            1624,2340,2340,2340,1479,1387,789,2340,2340,2030,
            2030,2340,2214,2340,1479,1387,789,2340,2030,1479,
            2340,789,255,214,2340,88,2340,2340,1517,768,
            941,116,1479,2340,789,88,2340,2340,968,260,
            88,116,358,2340,789,498,116,764,1455,260,
            2340,2340,358,88,789,2340,2340,1087,1455,116,
            358,2340,789,88,358,2340,789,1547,2340,1790,
            2340,1108,1617,88,2340,2340,358,1941,789,995,
            2340,88,1106,2340,2340,88,2340,1014,2340,2340,
            2340,1033,2340,2340,2340,1125,2340,88,2340,2340,
            2340,2340,2340,1079,2340,0,11,227,0,2348,
            1,0,1,2578,0,8,10,0,1845,119,
            0,180,20,0,1,2567,0,113,1830,0
        };
    };
    public final static char baseAction[] = BaseAction.baseAction;
    @Override
    public final int baseAction(int index) { return baseAction[index]; }
    public final static char lhs[] = baseAction;
    @Override
    public final int lhs(int index) { return lhs[index]; };

    public interface TermCheck {
        public final static byte termCheck[] = {0,
            0,1,2,3,4,5,6,7,8,9,
            10,11,12,13,14,15,16,17,18,19,
            20,21,22,23,24,25,26,27,28,29,
            30,31,32,33,34,35,36,37,38,39,
            40,41,42,43,44,45,46,47,48,49,
            50,51,52,0,54,55,56,0,58,0,
            1,2,3,4,5,6,7,8,9,10,
            11,12,13,14,15,16,17,18,19,20,
            21,22,23,24,25,26,27,28,29,30,
            31,32,33,34,35,36,37,38,39,40,
            41,42,43,44,45,46,47,48,49,50,
            51,52,59,54,55,56,59,58,0,1,
            2,3,4,5,6,7,8,9,10,11,
            12,13,14,15,16,17,18,19,20,21,
            22,23,24,25,26,27,28,29,30,31,
            32,33,34,35,36,37,38,39,40,41,
            42,43,44,45,46,47,48,49,50,51,
            52,0,54,55,56,0,58,0,1,2,
            3,4,5,6,7,8,9,10,11,12,
            13,14,15,16,17,18,19,20,21,22,
            23,24,25,26,27,28,29,30,31,32,
            33,34,35,36,37,38,39,40,41,42,
            43,44,45,46,47,48,49,50,51,52,
            59,54,55,56,0,1,2,3,4,5,
            6,7,8,9,10,11,12,13,14,15,
            16,17,18,19,20,21,22,23,24,25,
            26,27,28,29,30,31,32,33,34,35,
            36,37,38,39,40,41,42,43,44,45,
            46,47,48,49,50,51,52,0,54,55,
            56,0,1,2,3,0,5,2,7,8,
            9,10,11,12,13,14,15,16,17,18,
            19,20,21,0,23,2,25,26,27,28,
            29,0,1,0,3,0,1,6,3,6,
            0,6,41,42,43,44,45,46,47,48,
            49,50,51,52,0,54,55,56,0,1,
            2,3,4,5,0,1,2,0,0,0,
            1,2,4,4,5,78,0,19,20,21,
            22,23,24,25,26,27,28,29,19,20,
            21,22,23,0,25,26,27,28,29,41,
            42,43,44,45,46,47,48,49,50,51,
            52,0,54,55,56,0,1,2,3,4,
            5,0,53,69,70,71,72,0,0,60,
            0,73,4,65,19,20,21,22,23,24,
            25,26,27,28,29,69,70,71,72,0,
            22,0,0,4,61,4,41,42,43,44,
            45,46,47,48,49,50,51,52,0,54,
            55,56,61,22,53,0,83,84,85,86,
            87,88,89,90,91,92,0,66,73,0,
            1,2,3,4,5,6,7,8,9,10,
            11,12,13,14,15,16,17,18,57,60,
            0,22,61,24,0,1,6,3,0,30,
            31,32,33,34,35,36,37,38,39,40,
            0,1,2,3,4,5,6,7,8,9,
            10,11,12,13,14,15,16,17,18,0,
            0,1,22,3,24,69,70,71,72,0,
            30,31,32,33,34,35,36,37,38,39,
            40,0,1,2,3,4,5,6,7,8,
            9,10,11,12,13,14,15,16,17,18,
            0,0,1,22,3,24,0,1,0,3,
            2,30,31,32,33,34,35,36,37,38,
            39,40,0,1,2,3,4,5,6,7,
            8,9,10,11,12,13,14,15,16,17,
            18,0,1,2,22,0,24,2,0,0,
            81,82,30,31,32,33,34,35,36,37,
            38,39,40,0,1,2,3,4,5,6,
            7,8,9,10,11,12,13,14,15,16,
            17,18,0,0,1,22,3,24,0,7,
            8,0,0,30,31,32,33,34,35,36,
            37,38,39,40,0,1,2,3,4,5,
            6,7,8,9,10,11,12,13,14,15,
            16,17,18,74,75,0,22,0,24,2,
            0,1,7,8,30,31,32,33,34,35,
            36,37,38,39,40,0,1,2,3,4,
            5,6,7,8,9,10,11,12,13,14,
            15,16,17,18,0,74,75,22,0,24,
            0,7,8,0,6,30,31,32,33,34,
            35,36,37,38,39,40,0,1,2,3,
            4,5,6,7,8,9,10,11,12,13,
            14,15,16,17,18,0,0,1,22,3,
            24,6,0,0,2,0,30,31,32,33,
            34,35,36,37,38,39,40,0,1,2,
            3,4,5,6,7,8,9,10,11,12,
            13,14,15,16,17,18,73,77,0,22,
            0,24,0,5,0,5,4,30,31,32,
            33,34,35,36,37,38,39,40,0,1,
            2,3,4,5,6,7,8,9,10,11,
            12,13,14,15,16,17,18,0,1,2,
            22,76,24,0,1,0,3,4,30,31,
            32,33,34,35,36,37,38,39,40,0,
            58,0,19,20,21,4,23,24,25,26,
            27,28,29,0,0,2,0,0,19,20,
            21,4,0,22,41,42,43,44,45,46,
            47,48,49,50,51,52,59,54,55,56,
            0,58,0,1,30,3,4,62,63,9,
            0,1,2,0,4,0,1,2,57,0,
            5,19,20,21,5,23,24,25,26,27,
            28,29,19,20,21,53,23,60,25,26,
            27,28,29,41,42,43,44,45,46,47,
            48,49,50,51,52,0,54,55,56,4,
            58,0,1,53,3,4,0,0,53,0,
            60,4,0,0,0,2,2,22,4,0,
            19,20,21,64,23,24,25,26,27,28,
            29,19,20,21,0,23,0,25,26,27,
            28,29,41,42,43,44,45,46,47,48,
            49,50,51,52,0,54,55,56,0,58,
            0,1,2,3,0,58,53,53,59,5,
            0,0,2,0,60,5,0,4,0,19,
            20,21,6,23,6,25,26,27,28,29,
            19,20,21,0,23,22,25,26,27,28,
            29,41,42,43,44,45,46,47,48,49,
            50,51,52,0,54,55,56,0,1,6,
            3,0,1,53,0,1,2,0,0,5,
            57,67,68,0,61,0,19,20,21,4,
            23,0,25,26,27,28,29,19,20,21,
            0,0,19,20,21,0,0,64,41,42,
            43,44,45,46,47,48,49,50,51,52,
            0,54,55,56,19,20,21,53,23,0,
            25,26,27,28,29,64,0,0,61,19,
            20,21,57,6,53,60,41,42,43,44,
            45,46,47,48,49,50,51,52,0,1,
            2,3,4,5,0,7,8,9,10,11,
            12,13,14,15,16,17,18,77,0,0,
            79,23,0,1,2,3,4,5,9,7,
            8,9,10,11,12,13,14,15,16,17,
            18,0,1,2,3,23,5,6,7,8,
            9,10,11,12,13,14,15,16,17,18,
            0,57,0,65,0,1,2,3,4,5,
            6,7,8,9,10,11,12,13,14,15,
            16,17,18,0,0,0,2,65,0,1,
            2,3,4,5,0,7,8,9,10,11,
            12,13,14,15,16,17,18,0,0,0,
            0,0,0,19,20,21,4,57,0,1,
            2,3,58,5,6,7,8,9,10,11,
            12,13,14,15,16,17,18,53,0,0,
            2,0,0,5,0,62,63,62,63,0,
            1,2,3,65,5,6,7,8,9,10,
            11,12,13,14,15,16,17,18,0,1,
            2,3,60,5,6,7,8,9,10,11,
            12,13,14,15,16,17,18,0,1,2,
            3,53,5,0,7,8,9,10,11,12,
            13,14,15,16,17,18,0,1,2,3,
            0,5,0,7,8,9,10,11,12,13,
            14,15,16,17,18,0,1,2,3,0,
            5,0,7,8,9,10,11,12,13,14,
            15,16,17,18,0,1,2,3,0,5,
            0,7,8,9,10,11,12,13,14,15,
            16,17,18,0,0,0,0,19,20,21,
            0,23,2,25,26,27,28,29,0,0,
            10,11,4,0,5,0,76,4,0,0,
            5,62,63,62,63,6,0,0,0,0,
            22,4,0,53,0,22,0,19,20,21,
            6,0,6,0,0,0,66,6,0,0,
            57,57,0,53,0,0,0,0,0,64,
            0,0,0,0,0,0,66,0,60,0,
            57,0,0,0,78,0,67,68,0,0,
            80,0,67,68,0,58,57,59,0,0,
            0,0,0,61,0,0,0,0,0,0,
            0,0,59,59,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0,0,0,
            0,0,0,0,0,0,0,0
        };
    };
    public final static byte termCheck[] = TermCheck.termCheck;
    @Override
    public final int termCheck(int index) { return termCheck[index]; }

    public interface TermAction {
        public final static char termAction[] = {0,
            2340,4170,1,4169,1488,1,660,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1,1,2349,1,2441,1,1,1,1,1,
            1361,854,812,1434,1394,1620,1329,1353,1380,1371,
            1375,1,1,1,1,1,1,1,1,1,
            1,1,1,2340,1,1,1,2340,2347,8,
            2325,2325,2325,2325,2325,2325,2325,2325,2325,2325,
            2325,2325,2325,2325,2325,2325,2325,2325,2325,2325,
            2325,2325,2325,2325,2325,2325,2325,2325,2325,2325,
            2325,2325,2325,2325,2325,2325,2325,2325,2325,2325,
            2325,2325,2325,2325,2325,2325,2325,2325,2325,2325,
            2325,2325,1670,2325,2325,2325,1692,2325,2340,4170,
            1,4169,1488,1,660,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,1,
            2349,1,2441,1,1,1,1,1,1361,854,
            812,1434,1394,1620,1329,1353,1380,1371,1375,1,
            1,1,1,1,1,1,1,1,1,1,
            1,2340,1,1,1,183,2347,2340,4170,1,
            4169,2350,1,660,1,1,1,1,1,1,
            1,1,1,1,1,1,1,1,1,2349,
            1,2441,1,1,1,1,1,1361,854,812,
            1434,1394,1620,1329,1353,1380,1371,1375,1,1,
            1,1,1,1,1,1,1,1,1,1,
            1714,1,1,1,2340,4170,1,4169,2350,1,
            660,1,1,1,1,1,1,1,1,1,
            1,1,1,1,1,1,2349,1,2441,1,
            1,1,1,1,1361,854,812,1434,1394,1620,
            1329,1353,1380,1371,1375,1,1,1,1,1,
            1,1,1,1,1,1,1,71,1,1,
            1,2340,2351,2162,2352,11,2014,2316,1893,1791,
            1967,1596,1327,405,2353,2354,2355,2356,869,600,
            2555,2556,2557,2340,2504,360,2505,2503,2558,2506,
            2502,2340,2351,2340,2352,2340,2351,661,2352,552,
            254,1399,2509,2514,2513,2511,2512,2510,2515,2516,
            2508,2517,2518,2519,60,1499,439,345,2340,1,
            1,1,2350,1,1,2567,1940,1,2340,20,
            180,2331,2344,2331,2331,533,62,1,1,1,
            2349,1,2647,1,1,1,1,1,180,180,
            180,2331,180,43,180,180,180,180,180,1,
            1,1,1,1,1,1,1,1,1,1,
            1,158,1,1,1,2340,1,1,1,2350,
            1,2340,2331,1927,1273,856,710,184,1,2331,
            287,301,2350,2343,1,1,1,2349,1,2647,
            1,1,1,1,1,1927,1273,856,710,2340,
            2349,236,2340,2346,1085,224,1,1,1,1,
            1,1,1,1,1,1,1,1,2340,1,
            1,1,556,224,1252,2340,1062,1039,1016,993,
            970,924,947,901,878,833,61,1390,300,2340,
            4170,1,4169,2350,1,660,1,1,1,1,
            1,1,1,1,1,1,1,1,224,2345,
            230,2349,224,2441,186,4160,233,4160,2340,1361,
            854,812,1434,1394,1620,1329,1353,1380,1371,1375,
            2340,4170,1,4169,2350,1,660,1,1,1,
            1,1,1,1,1,1,1,1,1,2340,
            185,4162,2349,4162,2441,1927,1273,856,710,73,
            1361,854,812,1434,1394,1620,1329,1353,1380,1371,
            1375,2340,4170,1,4169,2350,1,660,1,1,
            1,1,1,1,1,1,1,1,1,1,
            2340,207,4167,2349,4167,2441,2340,2351,2340,2352,
            2175,1361,854,812,1434,1394,1620,1329,1353,1380,
            1371,1375,2340,4170,1,4169,2350,1,660,1,
            1,1,1,1,1,1,1,1,1,1,
            1,254,2567,1940,2349,2340,2441,2262,2340,63,
            343,2252,1361,854,812,1434,1394,1620,1329,1353,
            1380,1371,1375,2340,4170,1,4169,2350,1,660,
            1,1,1,1,1,1,1,1,1,1,
            1,1,52,209,2351,2349,2352,2441,2340,1221,
            673,64,2340,1361,854,812,1434,1394,1620,1329,
            1353,1380,1371,1375,2340,4170,1,4169,2350,1,
            660,1,1,1,1,1,1,1,1,1,
            1,1,1,1339,580,54,2349,2340,2441,2270,
            2340,2579,1221,673,1361,854,812,1434,1394,1620,
            1329,1353,1380,1371,1375,2340,4170,1,4169,2350,
            1,660,1,1,1,1,1,1,1,1,
            1,1,1,1,53,1339,580,2349,2340,2441,
            69,1221,673,2340,1503,1361,854,812,1434,1394,
            1620,1329,1353,1380,1371,1375,2340,4170,1,4169,
            2350,1,660,1,1,1,1,1,1,1,
            1,1,1,1,1,1,208,374,2349,374,
            2441,660,2340,2340,2274,67,1361,854,812,1434,
            1394,1620,1329,1353,1380,1371,1375,2340,4170,1,
            4169,2350,1,660,1,1,1,1,1,1,
            1,1,1,1,1,1,2315,686,2340,2349,
            2340,2441,1,1179,2340,1302,2319,1361,854,812,
            1434,1394,1620,1329,1353,1380,1371,1375,2340,4170,
            1,4169,2350,1,660,1,1,1,1,1,
            1,1,1,1,1,1,1,1,2567,1940,
            2349,461,2441,2340,1,55,1,192,1361,854,
            812,1434,1394,1620,1329,1353,1380,1371,1375,2340,
            2347,2340,1,1,1,2350,1,2537,1,1,
            1,1,1,2340,119,2286,2340,1,2555,2556,
            2557,2346,221,2349,1,1,1,1,1,1,
            1,1,1,1,1,1,1231,1,1,1,
            65,192,2340,1,2328,1,191,1944,1990,1656,
            1,2334,1454,131,2346,263,2567,1454,1877,1,
            1,1,1,1,254,1,2537,1,1,1,
            1,1,2555,2556,2557,635,2504,2345,2505,2503,
            2558,2506,2502,1,1,1,1,1,1,1,
            1,1,1,1,1,2340,1,1,1,2350,
            191,2340,1,635,1,192,2340,2340,635,2340,
            2345,2348,132,223,1,1372,1987,2349,2346,2340,
            1,1,1,2599,1,2537,1,1,1,1,
            1,2555,2556,2557,2340,2504,2340,2505,2503,2558,
            2506,2502,1,1,1,1,1,1,1,1,
            1,1,1,1,2340,1,1,1,2340,192,
            1,521,1940,2352,49,2347,635,635,1198,2093,
            266,133,1987,237,2345,1,2340,224,230,2555,
            2556,2557,1531,2504,234,2505,2503,2558,2506,2502,
            2555,2556,2557,1,2504,224,2505,2503,2558,2506,
            2502,2509,2514,2513,2511,2512,2510,2515,2516,2508,
            2517,2518,2519,2340,1499,439,345,2340,2351,1708,
            2352,1,2322,635,269,2567,1454,212,250,254,
            224,2074,2061,249,224,2340,2555,2556,2557,2346,
            2504,272,2505,2503,2558,2506,2502,1,1,1,
            70,113,2555,2556,2557,130,2340,2599,2509,2514,
            2513,2511,2512,2510,2515,2516,2508,2517,2518,2519,
            251,1499,439,345,2555,2556,2557,635,2504,2340,
            2505,2503,2558,2506,2502,2599,2340,42,1177,1,
            1,1,1834,4153,635,2345,2509,2514,2513,2511,
            2512,2510,2515,2516,2508,2517,2518,2519,1,2351,
            2162,2352,2344,1412,257,1893,1791,1967,1596,1327,
            405,2353,2354,2355,2356,869,600,686,2340,66,
            2337,743,2340,2351,2162,2352,2344,1815,1656,1893,
            1791,1967,1596,1327,405,2353,2354,2355,2356,869,
            600,2340,2351,2162,2352,1131,2014,4153,1893,1791,
            1967,1596,1327,405,2353,2354,2355,2356,869,600,
            89,702,2340,2343,1,2351,2162,2352,29,2014,
            4153,1893,1791,1967,1596,1327,405,2353,2354,2355,
            2356,869,600,59,271,58,1695,2343,2340,2351,
            2162,2352,2344,2014,252,1893,1791,1967,1596,1327,
            405,2353,2354,2355,2356,869,600,2340,2340,2340,
            2340,2340,1,2555,2556,2557,91,1154,2340,2351,
            2162,2352,29,2014,4153,1893,1791,1967,1596,1327,
            405,2353,2354,2355,2356,869,600,635,269,2340,
            1987,2340,2340,254,2340,1944,1990,1944,1990,1,
            2351,2162,2352,2343,2014,4153,1893,1791,1967,1596,
            1327,405,2353,2354,2355,2356,869,600,2340,2351,
            2162,2352,91,2014,4153,1893,1791,1967,1596,1327,
            405,2353,2354,2355,2356,869,600,1,2351,2162,
            2352,635,2014,2340,1893,1791,1967,1596,1327,405,
            2353,2354,2355,2356,869,600,2340,2351,2163,2352,
            68,2014,2340,1893,1791,1967,1596,1327,405,2353,
            2354,2355,2356,869,600,2340,2351,2162,2352,57,
            2014,56,1893,1791,1967,1596,1327,405,2353,2354,
            2355,2356,869,600,2340,2351,2171,2352,134,2014,
            293,1893,1791,1967,1596,1327,405,2353,2354,2355,
            2356,869,600,30,208,1,72,2555,2556,2557,
            32,2504,421,2505,2503,2558,2506,2502,1,51,
            2366,2367,117,2340,2093,50,461,2350,253,2340,
            2093,1944,1990,1944,1990,4153,2340,286,202,30,
            117,1440,2340,1306,190,2349,190,2555,2556,2557,
            186,190,185,1,1,2340,1634,207,2340,2340,
            2369,3442,2340,1959,2340,2340,2340,2340,2340,2598,
            2340,2340,2340,2340,2340,2340,724,2340,117,2340,
            1636,2340,2340,2340,533,2340,2074,2061,2340,2340,
            598,2340,2074,2061,2340,1440,500,1285,2340,2340,
            2340,2340,2340,612,2340,2340,2340,2340,2340,2340,
            2340,2340,2352,2351
        };
    };
    public final static char termAction[] = TermAction.termAction;
    @Override
    public final int termAction(int index) { return termAction[index]; }

    public interface Asb {
        public final static char asb[] = {0,
            496,1,425,281,496,427,494,310,322,492,
            322,492,492,322,492,322,283,466,427,416,
            527,494,283,201,133,132,375,48,466,374,
            253,492,241,241,492,241,427,466,338,466,
            214,283,427,79,214,26,427,254,494,102,
            494,205,466,330,427,216,468,283,425,141,
            99,306,167,269,451,451,451,451,451,83,
            451,451,451,161,178,183,181,189,185,192,
            191,194,193,195,216,129,494,451,48,374,
            253,449,202,202,241,527,527,436,527,527,
            202,253,139,451,139,269,494,102,205,205,
            330,330,338,333,337,427,306,99,82,79,
            451,451,451,451,451,451,451,451,451,451,
            451,338,338,529,269,269,241,241,3,451,
            451,451,451,451,451,451,451,451,451,451,
            451,451,451,451,451,451,451,451,451,337,
            129,24,251,202,451,202,267,451,252,451,
            451,254,436,139,436,198,380,102,129,244,
            102,205,207,431,207,330,306,335,336,211,
            466,216,451,451,99,83,26,466,211,338,
            338,338,99,181,181,178,178,185,185,183,
            183,183,183,191,189,193,192,139,194,429,
            24,449,202,338,527,338,338,253,436,451,
            102,246,207,129,451,241,306,330,214,338,
            535,333,99,99,529,535,341,494,451,207,
            45,202,449,436,451,436,436,129,201,451,
            200,129,330,216,338,129,22,378,241,451,
            44,3,202,338,252,246,451,338,161,26,
            99,241,451,338,3,202,436,99,436,338,
            436
        };
    };
    public final static char asb[] = Asb.asb;
    @Override
    public final int asb(int index) { return asb[index]; }

    public interface Asr {
        public final static byte asr[] = {0,
            73,0,4,60,12,13,14,15,16,1,
            3,2,10,11,9,5,7,8,17,18,
            0,4,58,53,66,2,13,14,15,16,
            1,3,10,11,9,5,7,8,17,18,
            12,6,0,61,53,66,0,25,41,19,
            42,54,26,43,27,44,45,28,20,46,
            47,23,55,29,56,48,49,21,50,51,
            52,1,3,4,61,57,22,0,19,20,
            21,23,10,11,9,5,7,8,17,18,
            12,2,1,3,13,14,15,16,65,4,
            0,25,41,19,42,54,26,43,27,44,
            45,28,20,46,47,23,55,29,56,48,
            49,21,50,51,52,1,3,24,4,58,
            0,2,4,61,57,60,22,53,59,0,
            19,20,21,10,11,9,5,7,8,17,
            18,12,2,1,3,13,14,15,16,0,
            53,2,66,80,10,11,61,83,84,85,
            86,87,89,88,90,91,92,5,67,68,
            7,8,63,62,69,70,71,72,74,75,
            9,76,77,78,58,81,82,65,60,59,
            57,22,4,0,1,3,4,58,57,0,
            5,2,53,60,4,25,41,19,42,54,
            26,43,27,44,45,28,20,46,47,23,
            55,29,56,48,49,21,50,51,52,64,
            1,3,0,22,4,5,1,2,59,0,
            73,79,58,32,34,6,38,40,35,30,
            36,37,33,31,39,24,4,22,12,13,
            14,15,16,10,11,9,7,8,17,18,
            5,2,1,3,54,55,56,49,41,46,
            44,45,43,42,47,48,50,51,52,29,
            26,23,25,28,27,19,20,21,0,49,
            41,46,44,45,43,42,47,48,50,51,
            52,59,22,29,26,23,25,28,27,19,
            20,21,5,1,2,53,57,60,4,0,
            9,5,7,8,67,68,62,63,69,70,
            71,72,74,75,76,77,78,81,82,59,
            83,84,85,86,87,88,89,90,91,92,
            65,60,58,6,4,57,22,61,0,66,
            80,10,11,9,7,8,67,68,62,63,
            69,70,71,72,74,75,76,77,78,81,
            82,61,83,84,85,86,87,88,89,90,
            91,92,57,53,60,25,19,26,27,28,
            20,23,29,21,22,4,5,2,1,0,
            4,57,58,61,0,32,34,6,38,40,
            35,30,36,37,33,31,39,24,22,4,
            2,13,14,15,16,1,3,10,11,9,
            7,8,17,18,12,5,0,25,41,19,
            42,54,26,43,27,44,45,28,20,46,
            47,23,55,29,56,48,49,21,50,51,
            52,1,3,6,0,73,25,41,19,42,
            54,26,43,27,44,45,28,20,46,47,
            23,55,29,56,48,49,21,50,51,52,
            1,3,5,22,4,24,2,0,4,60,
            5,2,53,0,5,25,41,19,42,54,
            26,43,27,44,45,28,20,46,47,23,
            55,29,56,48,49,21,50,51,52,1,
            3,64,0
        };
    };
    public final static byte asr[] = Asr.asr;
    @Override
    public final int asr(int index) { return asr[index]; }

    public interface Nasb {
        public final static char nasb[] = {0,
            150,25,32,15,159,110,45,121,122,13,
            122,108,108,122,107,122,116,165,112,25,
            25,45,105,33,59,59,25,25,165,25,
            51,7,7,7,7,7,9,25,157,165,
            156,75,112,63,156,54,94,69,67,105,
            25,105,25,30,96,89,141,18,32,42,
            65,79,25,168,43,43,43,43,43,64,
            43,43,43,25,25,25,25,25,25,25,
            25,25,25,25,133,105,25,43,25,25,
            85,81,33,33,7,25,25,128,25,25,
            33,51,25,43,25,1,25,137,105,7,
            30,105,157,101,25,112,79,65,64,38,
            43,43,43,43,43,43,43,43,43,43,
            43,157,157,103,168,168,57,57,35,82,
            43,43,43,43,43,43,43,43,43,43,
            43,43,43,43,43,43,43,82,43,157,
            52,105,25,33,43,33,172,82,25,82,
            82,69,128,25,128,25,25,105,52,32,
            146,7,92,25,25,105,79,59,59,100,
            165,89,43,43,65,64,124,165,154,157,
            157,157,65,25,25,25,25,25,25,25,
            25,25,25,25,25,25,25,25,25,25,
            41,174,33,157,25,157,157,85,128,43,
            137,112,92,52,43,7,79,38,156,157,
            163,26,65,65,28,163,125,125,43,92,
            49,33,174,128,82,128,128,52,33,43,
            25,52,38,89,157,52,40,25,7,43,
            47,174,33,157,25,112,43,157,61,54,
            65,7,43,157,174,33,128,65,128,157,
            128
        };
    };
    public final static char nasb[] = Nasb.nasb;
    @Override
    public final int nasb(int index) { return nasb[index]; }

    public interface Nasr {
        public final static char nasr[] = {0,
            84,82,81,74,80,79,1,0,37,39,
            36,0,109,0,37,2,100,84,83,82,
            81,74,80,79,0,37,42,61,60,36,
            0,2,17,0,2,108,0,25,0,102,
            55,2,6,0,106,0,121,0,119,0,
            2,45,0,6,55,0,90,0,46,0,
            117,0,2,6,40,0,110,0,2,24,
            1,29,92,0,24,2,123,0,75,0,
            17,2,27,0,29,1,68,45,2,24,
            0,78,0,39,44,37,42,36,0,23,
            37,42,60,61,2,0,112,87,0,39,
            44,42,37,2,0,74,69,70,71,72,
            64,48,0,6,55,53,0,1,29,2,
            30,0,113,2,24,0,95,2,57,0,
            2,24,47,28,0,2,57,88,0,122,
            2,24,0,60,61,2,23,0,2,24,
            103,0,2,24,36,54,0,2,57,27,
            0,24,47,2,63,0
        };
    };
    public final static char nasr[] = Nasr.nasr;
    @Override
    public final int nasr(int index) { return nasr[index]; }

    public interface TerminalIndex {
        public final static char terminalIndex[] = {0,
            85,2,86,87,9,3,10,11,8,6,
            7,68,81,82,83,84,12,13,48,64,
            76,92,69,93,44,55,60,63,72,77,
            45,46,49,50,51,57,58,59,65,71,
            47,52,56,61,62,66,67,74,75,78,
            79,80,1,54,70,73,42,91,29,90,
            31,16,17,30,89,4,14,15,18,19,
            20,21,94,22,23,24,25,26,53,5,
            27,28,32,33,34,35,36,37,38,39,
            40,41,88
        };
    };
    public final static char terminalIndex[] = TerminalIndex.terminalIndex;
    @Override
    public final int terminalIndex(int index) { return terminalIndex[index]; }

    public interface NonterminalIndex {
        public final static char nonterminalIndex[] = {0,
            99,0,0,0,0,101,105,106,107,108,
            109,110,111,112,113,114,98,115,116,0,
            0,117,96,126,134,0,100,122,118,121,
            0,0,0,0,0,0,156,0,159,95,
            153,155,0,157,97,158,125,133,0,0,
            0,144,104,154,0,120,148,167,170,171,
            172,0,0,136,0,160,166,124,137,138,
            139,140,143,145,165,169,103,0,128,129,
            130,131,132,135,141,142,0,147,152,102,
            119,123,127,0,146,150,0,0,151,161,
            164,174,179,0,0,181,0,0,0,0,
            149,0,162,163,168,173,0,175,176,0,
            177,178,180,0,0
        };
    };
    public final static char nonterminalIndex[] = NonterminalIndex.nonterminalIndex;
    @Override
    public final int nonterminalIndex(int index) { return nonterminalIndex[index]; }

    public interface ScopePrefix {
        public final static char scopePrefix[] = {
            82,113,92,35,41,121,12,136,21,51,
            69,28,47,103,145,162,169,173,149,1,
            1,32,56,79,177,6,107,156,156,127,
            99,59,59,59
        };
    };
    public final static char scopePrefix[] = ScopePrefix.scopePrefix;
    @Override
    public final int scopePrefix(int index) { return scopePrefix[index]; }

    public interface ScopeSuffix {
        public final static char scopeSuffix[] = {
            90,90,90,4,4,90,18,142,26,4,
            26,26,4,101,90,26,26,4,153,4,
            4,26,4,26,26,9,110,159,166,130,
            101,66,61,74
        };
    };
    public final static char scopeSuffix[] = ScopeSuffix.scopeSuffix;
    @Override
    public final int scopeSuffix(int index) { return scopeSuffix[index]; }

    public interface ScopeLhs {
        public final static char scopeLhs[] = {
            71,69,71,46,46,69,53,33,62,46,
            39,62,46,88,28,7,6,6,20,121,
            120,60,46,37,4,102,88,8,6,34,
            88,39,44,39
        };
    };
    public final static char scopeLhs[] = ScopeLhs.scopeLhs;
    @Override
    public final int scopeLhs(int index) { return scopeLhs[index]; }

    public interface ScopeLa {
        public final static byte scopeLa[] = {
            58,58,58,65,65,58,58,79,60,65,
            60,60,65,22,58,60,60,65,59,65,
            65,60,65,60,60,61,1,60,60,30,
            22,2,2,2
        };
    };
    public final static byte scopeLa[] = ScopeLa.scopeLa;
    @Override
    public final int scopeLa(int index) { return scopeLa[index]; }

    public interface ScopeStateSet {
        public final static byte scopeStateSet[] = {
            119,119,119,94,94,119,25,10,98,94,
            105,98,94,5,9,33,33,33,63,1,
            3,98,94,105,33,91,5,36,33,10,
            5,105,107,105
        };
    };
    public final static byte scopeStateSet[] = ScopeStateSet.scopeStateSet;
    @Override
    public final int scopeStateSet(int index) { return scopeStateSet[index]; }

    public interface ScopeRhs {
        public final static char scopeRhs[] = {0,
            149,53,0,95,0,211,95,0,31,143,
            0,171,209,95,6,148,0,97,0,0,
            159,95,2,153,0,96,0,159,95,2,
            0,169,2,0,115,23,194,95,53,0,
            115,194,95,23,53,0,115,23,53,0,
            115,194,95,53,0,115,53,0,130,0,
            2,0,162,96,0,2,96,0,159,95,
            2,130,0,2,0,160,96,0,145,2,
            0,171,191,95,6,94,205,54,0,97,
            0,171,191,95,6,205,54,0,150,0,
            98,0,204,95,150,0,95,150,0,149,
            98,0,187,95,6,203,94,202,167,0,
            187,95,6,202,167,0,123,35,0,77,
            2,100,96,98,0,123,116,120,2,38,
            0,53,121,0,185,95,6,0,120,82,
            112,0,29,117,0,170,2,0,96,106,
            0,170,2,12,0,96,104,0,201,2,
            99,0,120,53,99,0,120,2,0
        };
    };
    public final static char scopeRhs[] = ScopeRhs.scopeRhs;
    @Override
    public final int scopeRhs(int index) { return scopeRhs[index]; }

    public interface ScopeState {
        public final static char scopeState[] = {0,
            531,0,551,0,2084,1868,1682,0,1683,1874,
            1852,1830,1808,1772,1750,1714,1508,1692,1670,1436,
            1620,1376,1335,0,612,500,1591,1573,477,1574,
            556,0,1596,1327,405,1574,1815,343,686,533,
            1656,461,1927,1273,856,710,1339,580,1221,673,
            1990,1944,2093,2074,2061,2014,1967,1412,1893,1791,
            869,600,1306,612,1285,1252,1231,1198,1177,1154,
            1131,1108,789,1085,1062,1039,1016,993,970,947,
            924,901,878,833,766,316,812,743,556,635,
            500,477,0,926,783,666,610,2088,392,1987,
            1454,2030,1387,0,333,376,1636,392,1717,1454,
            1546,1387,1965,1443,1877,1940,1519,0,316,658,
            1544,376,0
        };
    };
    public final static char scopeState[] = ScopeState.scopeState;
    @Override
    public final int scopeState(int index) { return scopeState[index]; }

    public interface InSymb {
        public final static char inSymb[] = {0,
            0,200,117,95,215,95,193,172,173,167,
            174,56,55,175,54,176,177,95,2,1,
            130,193,207,186,135,130,179,137,95,132,
            6,202,180,180,205,180,147,129,145,95,
            2,95,57,53,2,61,147,95,94,6,
            94,6,129,5,147,95,216,95,117,23,
            115,95,100,2,12,18,17,8,7,5,
            9,11,10,99,102,104,103,106,105,108,
            107,111,109,112,95,6,148,5,137,132,
            185,39,31,33,37,36,30,35,40,38,
            122,6,34,32,94,95,203,95,6,95,
            5,129,159,117,160,95,95,115,194,168,
            92,91,90,88,89,87,86,85,84,83,
            61,170,120,150,2,2,80,66,2,53,
            68,67,5,62,63,8,7,75,74,72,
            71,70,69,76,9,78,77,82,81,206,
            95,6,4,120,95,94,2,2,123,2,
            2,95,59,149,59,184,94,6,187,150,
            188,95,191,94,192,129,95,153,154,2,
            95,57,194,23,115,5,116,95,2,170,
            170,201,120,103,103,102,102,105,105,104,
            104,104,104,107,106,109,108,120,111,57,
            95,140,156,120,30,120,120,185,59,57,
            95,95,191,171,61,57,95,168,2,169,
            95,147,115,115,147,95,116,116,59,209,
            95,156,110,116,2,116,116,187,204,59,
            145,171,168,95,159,171,57,211,66,53,
            212,110,156,120,123,57,59,159,138,61,
            149,66,53,156,110,116,79,149,116,156,
            116
        };
    };
    public final static char inSymb[] = InSymb.inSymb;
    @Override
    public final int inSymb(int index) { return inSymb[index]; }

    public interface Name {
        public final static String name[] = {
            "",
            "[",
            "(",
            "{",
            ".",
            "->",
            "++",
            "--",
            "&",
            "*",
            "+",
            "-",
            "~",
            "!",
            "/",
            "%",
            ">>",
            "<<",
            "<",
            ">",
            "<=",
            ">=",
            "==",
            "!=",
            "^",
            "|",
            "&&",
            "||",
            "?",
            ":",
            "...",
            "=",
            "*=",
            "/=",
            "%=",
            "+=",
            "-=",
            ">>=",
            "<<=",
            "&=",
            "^=",
            "|=",
            ",",
            "$empty",
            "auto",
            "break",
            "case",
            "char",
            "const",
            "continue",
            "default",
            "do",
            "double",
            "else",
            "enum",
            "extern",
            "float",
            "for",
            "goto",
            "if",
            "inline",
            "int",
            "long",
            "register",
            "restrict",
            "return",
            "short",
            "signed",
            "sizeof",
            "static",
            "struct",
            "switch",
            "typedef",
            "union",
            "unsigned",
            "void",
            "volatile",
            "while",
            "_Bool",
            "_Complex",
            "_Imaginary",
            "integer",
            "floating",
            "charconst",
            "stringlit",
            "identifier",
            "Completion",
            "EndOfCompletion",
            "Invalid",
            "RightBracket",
            "RightParen",
            "RightBrace",
            "SemiColon",
            "ERROR_TOKEN",
            "EOF_TOKEN",
            "]",
            ")",
            "}",
            ";",
            "identifier_token",
            "expression",
            "postfix_expression",
            "member_name",
            "type_id",
            "initializer_list",
            "unary_expression",
            "cast_expression",
            "multiplicative_expression",
            "additive_expression",
            "shift_expression",
            "relational_expression",
            "equality_expression",
            "and_expression",
            "exclusive_or_expression",
            "inclusive_or_expression",
            "logical_and_expression",
            "logical_or_expression",
            "assignment_expression",
            "expression_in_statement",
            "expression_list_actual",
            "constant_expression",
            "statement",
            "compound_statement",
            "block_item_list",
            "block_item",
            "declaration",
            "declaration_specifiers",
            "init_declarator_list",
            "simple_declaration_specifiers",
            "struct_or_union_declaration_sp" +
            "ecifiers",
            "elaborated_declaration_specifi" +
            "ers",
            "enum_declaration_specifiers",
            "typdef_name_declaration_specif" +
            "iers",
            "no_type_declaration_specifier",
            "type_qualifier",
            "no_type_declaration_specifiers",
            "simple_type_specifier",
            "struct_or_union_specifier",
            "elaborated_specifier",
            "enum_specifier",
            "type_name_specifier",
            "init_declarator",
            "complete_declarator",
            "initializer",
            "declarator",
            "struct_or_union",
            "struct_declaration_list",
            "struct_declaration",
            "specifier_qualifier_list",
            "struct_declarator_list",
            "complete_struct_declarator",
            "enumerator_list",
            "enumerator",
            "direct_declarator",
            "pointer_seq",
            "array_direct_declarator",
            "basic_direct_declarator",
            "knr_direct_declarator",
            "array_modifier",
            "function_direct_declarator",
            "parameter_type_list",
            "function_declarator",
            "identifier_list",
            "knr_function_declarator",
            "array_modifier_type_qualifiers",
            "type_qualifier_list",
            "parameter_list",
            "parameter_declaration",
            "complete_parameter_declarator",
            "abstract_declarator",
            "direct_abstract_declarator",
            "basic_direct_abstract_declarat" +
            "or",
            "array_direct_abstract_declarat" +
            "or",
            "initializer_seq",
            "designated_initializer",
            "designation",
            "designator_list",
            "designator",
            "external_declaration_list",
            "external_declaration",
            "declaration_list",
            "function_body"
        };
    };
    public final static String name[] = Name.name;
    public final String name(int index) { return name[index]; }

    public final static int
           ERROR_SYMBOL      = 24,
           SCOPE_UBOUND      = 33,
           SCOPE_SIZE        = 34,
           MAX_NAME_LENGTH   = 38;

    public final int getErrorSymbol() { return ERROR_SYMBOL; }
    public final int getScopeUbound() { return SCOPE_UBOUND; }
    public final int getScopeSize() { return SCOPE_SIZE; }
    public final int getMaxNameLength() { return MAX_NAME_LENGTH; }

    public final static int
           NUM_STATES        = 291,
           NT_OFFSET         = 93,
           LA_STATE_OFFSET   = 2655,
           MAX_LA            = 2147483647,
           NUM_RULES         = 315,
           NUM_NONTERMINALS  = 125,
           NUM_SYMBOLS       = 218,
           SEGMENT_SIZE      = 8192,
           START_STATE       = 1922,
           IDENTIFIER_SYMBOL = 0,
           EOFT_SYMBOL       = 73,
           EOLT_SYMBOL       = 73,
           ACCEPT_ACTION     = 2315,
           ERROR_ACTION      = 2340;

    public final static boolean BACKTRACK = true;

    public final int getNumStates() { return NUM_STATES; }
    public final int getNtOffset() { return NT_OFFSET; }
    public final int getLaStateOffset() { return LA_STATE_OFFSET; }
    public final int getMaxLa() { return MAX_LA; }
    public final int getNumRules() { return NUM_RULES; }
    public final int getNumNonterminals() { return NUM_NONTERMINALS; }
    public final int getNumSymbols() { return NUM_SYMBOLS; }
    public final int getSegmentSize() { return SEGMENT_SIZE; }
    public final int getStartState() { return START_STATE; }
    public final int getStartSymbol() { return lhs[0]; }
    public final int getIdentifierSymbol() { return IDENTIFIER_SYMBOL; }
    public final int getEoftSymbol() { return EOFT_SYMBOL; }
    public final int getEoltSymbol() { return EOLT_SYMBOL; }
    public final int getAcceptAction() { return ACCEPT_ACTION; }
    public final int getErrorAction() { return ERROR_ACTION; }
    public final boolean isValidForParser() { return isValidForParser; }
    public final boolean getBacktrack() { return BACKTRACK; }

    public final int originalState(int state) {
        return -baseCheck[state];
    }
    public final int asi(int state) {
        return asb[originalState(state)];
    }
    public final int nasi(int state) {
        return nasb[originalState(state)];
    }
    public final int inSymbol(int state) {
        return inSymb[originalState(state)];
    }

    public final int ntAction(int state, int sym) {
        return baseAction[state + sym];
    }

    public final int tAction(int state, int sym) {
        int i = baseAction[state],
            k = i + sym;
        return termAction[termCheck[k] == sym ? k : i];
    }
    public final int lookAhead(int la_state, int sym) {
        int k = la_state + sym;
        return termAction[termCheck[k] == sym ? k : la_state];
    }
}
